package com.atguigu.exam;

import java.lang.reflect.Field;

/**
 * 利用通过反射修改私有成员变量
 定义PrivateTest类，有私有name属性，并且属性值为hellokitty，
 只提供name的getName的公有方法
 创建带有main方法ReflectTest的类，利用Class类得到私有的name属性
 修改私有的name属性值，并调用getName()的方法打印name属性值

 * @author xbd
 * @create 2021-06-01 19:26
 */
public class ReflectTest {
    public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchFieldException {
        Class<PrivateTest> privateTestClass = PrivateTest.class;
        PrivateTest privateTest = privateTestClass.newInstance();
        System.out.println(privateTest.getName());
        Field name = privateTestClass.getDeclaredField("name");
        name.setAccessible(true);
        name.set(privateTest,"Tomcat");
        System.out.println(privateTest.getName());
    }
}
